Skip to content

pref(provider):增加强构造器#153

Merged
minorcell merged 5 commits into
1024XEngineer:mainfrom
phantom5099:main
Apr 6, 2026
Merged

pref(provider):增加强构造器#153
minorcell merged 5 commits into
1024XEngineer:mainfrom
phantom5099:main

Conversation

@phantom5099

@phantom5099 phantom5099 commented Apr 4, 2026

Copy link
Copy Markdown
Collaborator

变更说明

internal/provider 层实施 StreamEvent 强类型迁移 Phase 1:引入 Payload 接口字段 + 4 个强类型 Payload 结构体 + 4 个构造器函数,同时通过兼容层保持 Runtime/TUI 零改动可运行。

主要改动

文件 改动
internal/provider/types.go 新增 Payload interface{} 字段;新增 TextDeltaPayloadToolCallStartPayloadToolCallDeltaPayloadMessageDonePayload 四种强类型;新增 NewTextDeltaStreamEvent() / NewToolCallStartStreamEvent() / NewToolCallDeltaStreamEvent() / NewMessageDoneStreamEvent() 四个构造器,构造器同步填充 Payload + 弃用扁平字段以实现向后兼容
internal/provider/openai/openai.go 4 个 emit 函数(emitTextDelta/emitToolCallStart/emitToolCallDelta/emitMessageDone)全部从裸 StreamEvent{...} 切换为构造器调用;emitToolCallDelta 签名新增 id 参数补全 toolCallID;mergeToolCallDelta 调用处传入 call.ID;修复 Driver() 中局部变量与包名冲突(providerp
internal/provider/openai/openai_test.go 适配 emitToolCallDelta 新签名(补充 id 实参),更新断言覆盖新字段
docs/phase2-runtime-migration.md 新建 — Phase 2 Runtime 负责人任务清单文档,含 8 项具体任务、执行顺序建议、验证清单及设计备注

预期收益

  1. 类型安全提升StreamEvent 从扁平弱类型字段升级为强类型 Payload + 构造器强制模式,杜绝运行时字段错配风险
  2. 零破坏迁移 — 兼容层双填充策略确保现有 Runtime/TUI 代码无需任何改动即可正常编译和运行
  3. 数据完整性修复emitToolCallDelta 新增 id 参数,解决了此前 tool_call_delta 事件缺少 ToolCallID 的问题
  4. 清晰的交接边界 — Phase 2 文档为 Runtime 负责人提供了精确到行号的任务指引和推荐执行顺序
  5. 可验证性 — 编译通过 (go build ./...),全量测试 18/18 包全绿 (go test ./...)

@codecov

codecov Bot commented Apr 4, 2026

Copy link
Copy Markdown

@minorcell

Copy link
Copy Markdown
Member

@phantom5099

  1. 再补齐一下测试
  2. 开发阶段少做兼容

@pionxe

pionxe commented Apr 6, 2026

Copy link
Copy Markdown
Collaborator

我看下来基本上没有什么大问题,对StreamEventType 与Payload都符合我预期要的,就是有两个问题:我需要一个文档表明你实现的字段类型以及暴露的接口;覆盖率这个问题不知道会不会影响到别人的pr。

@phantom5099

Copy link
Copy Markdown
Collaborator Author

我看下来基本上没有什么大问题,对StreamEventType 与Payload都符合我预期要的,就是有两个问题:我需要一个文档表明你实现的字段类型以及暴露的接口;覆盖率这个问题不知道会不会影响到别人的pr。

接口文档在issue#169
应该不会吧,测试覆盖率应该只和自己修改的内容有关

@minorcell minorcell merged commit f59759e into 1024XEngineer:main Apr 6, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants